/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.managed;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import sv.com.intesal.clases.LimpiarManaged;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.SolicitudMaterial;
import sv.com.intesal.compra.controlador.SolicitudMaterialControlador;
import sv.com.intesal.seguridad.managed.SessionManaged;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "consultaSolicitudMaterialManaged")
@ViewScoped
public class ConsultaSolicitudMaterialManaged implements Serializable {

    private Mensaje m;
    private SessionManaged sm;
    private Boolean flagStep_1;
    private Boolean flagStep_2;

    /*SOLICITUD MATERIAL*/
    private List<SolicitudMaterial> encaSolitudMateriales;
    private List<SolicitudMaterial> detaSolitudMateriales;
    private SolicitudMaterial selectedEncaSolitudMaterial;
    private SolicitudMaterial selectedDetaSolitudMaterial;

    public ConsultaSolicitudMaterialManaged() {

        this.selectedDetaSolitudMaterial = new SolicitudMaterial();
        this.selectedEncaSolitudMaterial = new SolicitudMaterial();
        this.sm = new SessionManaged();
        this.m = new Mensaje();

        this.flagStep_1 = true;
        this.flagStep_2 = false;
    }

    public void buscarGrid() {

        try {
            if (sm.validar_rol_usuario("wfrmcon_SolicitudMaterial", sm.buscar) == true) {
                SolicitudMaterialControlador sc = new SolicitudMaterialControlador();
                this.encaSolitudMateriales = sc.getConsulta_EncaSolicitudMaterial(this.selectedEncaSolitudMaterial);
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void anularRegistro() {

        try {
            if (this.validar_anular() == true) {
                if (sm.validar_rol_usuario("wfrmcon_SolicitudMaterial", sm.anular) == true) {
                    SolicitudMaterialControlador sc = new SolicitudMaterialControlador();

                    this.detaSolitudMateriales.get(0).setNumero_s(this.selectedDetaSolitudMaterial.getNumero_s());
                    sc.anularRegistro(this.detaSolitudMateriales);
                    LimpiarManaged.limpiar();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void modificarRegistro() {
        try {
            if (this.validar_modificar() == true) {
                if (sm.validar_rol_usuario("wfrmcon_SolicitudMaterial", sm.modificar) == true) {
                    SolicitudMaterialControlador sc = new SolicitudMaterialControlador();
                    sc.modificarRegistro(this.selectedDetaSolitudMaterial);
                }
            }
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    public void generarEncaReporte() {
        try {

            if (this.encaSolitudMateriales == null) {
                m.messageError("NO HAY REGISTROS EN LA BUSQUEDA");
            } else {
                if (sm.validar_rol_usuario("wfrmcon_SolicitudMaterial", sm.reporte) == true) {
                    SolicitudMaterialControlador sc = new SolicitudMaterialControlador();
                    sc.generarReporte_SolicitudMaterial(this.selectedEncaSolitudMaterial);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void generarDetaReporte() {
        try {

            if (this.encaSolitudMateriales == null) {
                m.messageError("NO HAY REGISTROS EN LA BUSQUEDA");
            } else if (this.detaSolitudMateriales == null) {
                m.messageError("NO HAY MATERIALES EN LA TRANSACCION");
            } else {

                if (sm.validar_rol_usuario("wfrmcon_SolicitudMaterial", sm.reporte) == true) {
                    this.selectedEncaSolitudMaterial.setId_s(this.selectedDetaSolitudMaterial.getId_s());

                    SolicitudMaterialControlador sc = new SolicitudMaterialControlador();
                    sc.generarReporte_SolicitudMaterial(this.selectedEncaSolitudMaterial);

                    this.selectedEncaSolitudMaterial.setId_s(null);
                }
            }
        } catch (Exception e) {
            this.selectedEncaSolitudMaterial.setId_s(null);
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    private Boolean validar_modificar() {
        try {
            Boolean var_return = true;

            if (this.selectedDetaSolitudMaterial.getEstado_s().equals("A")) {
                m.messageError("NO PUEDE MODIFICAR REGISTRO YA ESTA ANULADO!");
                var_return = false;
            }
            if (this.selectedDetaSolitudMaterial.getId_s() == null) {
                m.messageFatal("DEBE ELEGIR UN REGISTRO A MODIFICAR. NO TIENE CODIGO ASIGNADO. ERROR");
                var_return = false;
            }
            return var_return;
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
            return false;
        }
    }

    private Boolean validar_anular() {
        try {
            Boolean var_return = true;

            if (this.selectedDetaSolitudMaterial.getEstado_s().equals("A")) {
                m.messageError("NO PUEDE ANULAR REGISTRO YA ESTA ANULADO!");
                var_return = false;
            }
            if (this.selectedDetaSolitudMaterial.getId_s() == null) {
                m.messageFatal("DEBE ELEGIR UN REGISTRO A MODIFICAR. NO TIENE CODIGO ASIGNADO. ERROR");
                var_return = false;
            }
            if (this.detaSolitudMateriales.size() == 0) {
                m.messageFatal("NO HAY MATERIALES PARA ANULAR EL REGISTRO");
                var_return = false;
            }
            return var_return;
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
            return false;
        }
    }

    public void ocultarFlag_1() {
        try {
            if (this.selectedDetaSolitudMaterial == null) {
                m.messageError("DEBE ELEGIR UN REGISTRO PARA CONTINUAR");
            } else if (this.selectedDetaSolitudMaterial != null) {
                this.flagStep_1 = false;
                this.flagStep_2 = true;

                SolicitudMaterialControlador sc = new SolicitudMaterialControlador();
                this.detaSolitudMateriales = sc.getDetaSolicitudMaterial(this.selectedDetaSolitudMaterial.getId_s());
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void ocultarFlag_2() {
        try {
            this.flagStep_1 = true;
            this.flagStep_2 = false;
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    /*SETTERS AND GETTERS*/
    public List<SolicitudMaterial> getDetaSolitudMateriales() {
        return detaSolitudMateriales;
    }

    public void setDetaSolitudMateriales(List<SolicitudMaterial> detaSolitudMateriales) {
        this.detaSolitudMateriales = detaSolitudMateriales;
    }

    public List<SolicitudMaterial> getEncaSolitudMateriales() {
        return encaSolitudMateriales;
    }

    public void setEncaSolitudMateriales(List<SolicitudMaterial> encaSolitudMateriales) {
        this.encaSolitudMateriales = encaSolitudMateriales;
    }

    public Boolean getFlagStep_1() {
        return flagStep_1;
    }

    public void setFlagStep_1(Boolean flagStep_1) {
        this.flagStep_1 = flagStep_1;
    }

    public Boolean getFlagStep_2() {
        return flagStep_2;
    }

    public void setFlagStep_2(Boolean flagStep_2) {
        this.flagStep_2 = flagStep_2;
    }

    public SolicitudMaterial getSelectedDetaSolitudMaterial() {
        if (selectedDetaSolitudMaterial == null) {
            selectedDetaSolitudMaterial = new SolicitudMaterial();
        }
        return selectedDetaSolitudMaterial;
    }

    public void setSelectedDetaSolitudMaterial(SolicitudMaterial selectedDetaSolitudMaterial) {
        this.selectedDetaSolitudMaterial = selectedDetaSolitudMaterial;
    }

    public SolicitudMaterial getSelectedEncaSolitudMaterial() {
        if (selectedEncaSolitudMaterial == null) {
            selectedEncaSolitudMaterial = new SolicitudMaterial();
        }
        return selectedEncaSolitudMaterial;
    }

    public void setSelectedEncaSolitudMaterial(SolicitudMaterial selectedEncaSolitudMaterial) {
        this.selectedEncaSolitudMaterial = selectedEncaSolitudMaterial;
    }
}
